package com.aigou.admin.aigouspringboot.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author Mr.LiFuXing
 * @Date 2024/12/3 16:51
 * @Title MD5Util
 * @Package com.lifuxing.utils
 */
public class MD5Util {

    /**
     * 将字符串加密成MD5格式
     *
     * @param input 需要加密的字符串
     * @return 加密后的MD5字符串（32位十六进制数）
     */
    public static String encryptToMD5(String input) {
        if (input == null || input.isEmpty()) {
            return null;
        }

        try {
            // 获取MD5算法的MessageDigest实例
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 更新摘要以包含输入字符串的字节
            md.update(input.getBytes());

            // 计算哈希值，结果是一个字节数组
            byte[] digest = md.digest();

            // 将字节数组转换为十六进制字符串
            StringBuilder sb = new StringBuilder();
            for (byte b : digest) {
                sb.append(String.format("%02x", b));
            }

            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5算法不可用", e);
        }
    }
}